Crowiをdeploy to Herokuでデプロイして画像OKにする
概要
Crowiをなるべく怠惰にクローズドで使いたかったのでdeploy to herokuボタンをポチッと押した。
大変便利。
で、その後、設定を変えないといけないのでちょっと触ってるみたいな話。
少量だけど画像もアップしたりしたい、、というやつ。
でハマった。
デフォルト
デフォルトではAWSのS3とかに画像をアップできるように設定されている。
AWS側のパラメータセットがなければ何も起きない(画像をアップできないようになっている)
で、これは.envファイルをアップしたりすれば解決できるんだな~という判断をして、
herokuに上がっているものを編集する旅に出ることになった。
設定を変えたいんだ
具体的にはheroku上に.envファイルを足したり編集したりして云々がしたい。
herokuはgithubからのデプロイ以外にもheroku CLIからのpushもできて素敵、みたいな感じなんだけど、
deploy to herokuボタン一発でアップされたアプリケーションは、なんというか特殊っぽくて、
デプロイ元のgitリポジトリを持たないみたいだ。
heroku gitで取得しても空のフォルダが出来上がる。
で、herokuからソースコードを取得して設定ファイルを追加、その上で再度アップして云々ってのをやる必要がある。
バックアップ
既存のコードを取得するための処理が行えた。slug。
https://kb.heroku.com/how-can-i-download-my-code-from-heroku
slugプラグイン入れてheroku slugs:download -a APP_NAME でOK。
実行するとアプリケーションのファイルがまるっと手に入る。
(もしかしたらここが不十分とかそういうのかな、、あとで問題が出る。)
このときの現状
・手元にはherokuにアップされていたファイルがすべて?ある
・これらをherokuへとアップし直すことで、デプロイとか更新ができる。はず。
node_modulesはまあ現地で展開してくれそうなのでgitには含まないようにして、herokuへとpush。
で、herokuへとpushしたあたりで問題が
deploy時のpostinstall処理でこんな感じのエラーが出る。
remote: > crowi@1.6.2 postinstall /tmp/build_d989cb6fdb4acc6a79775c1d6949d915
remote: > gulp
remote:
remote: [05:14:06] Using gulpfile /tmp/build_d989cb6fdb4acc6a79775c1d6949d915/gulpfile.js
remote: [05:14:06] Starting 'css:sass'...
remote: [05:14:06] Starting 'js:del'...
remote: [05:14:06] Finished 'js:del' after 25 ms
remote: [05:14:06] Starting 'js:concat'...
remote: [05:14:06] Finished 'js:concat' after 45 ms
remote: [05:14:06] Starting 'webpack'...
remote: [05:14:08] Finished 'css:sass' after 1.82 s
remote: [05:14:08] Starting 'css:concat'...
remote: [05:14:09] Finished 'css:concat' after 1.33 s
remote: [05:14:09] Starting 'css:min'...
remote: [05:14:10] Finished 'css:min' after 982 ms
remote:
remote: internal/streams/legacy.js:59
remote: throw er; // Unhandled stream error in pipe.
remote: ^
remote: Error: ./resource/js/app.js
remote: Module build failed: SyntaxError: Unexpected token (45:17)
remote:
remote: 43 | const componentMappings = {
remote: 44 | // 'search-top': <HeaderSearchBox crowi={crowi} />,
remote: > 45 | 'search-page': <SearchPage crowi={crowi} />,
remote: | ^
remote: 46 | 'page-list-search': <PageListSearch crowi={crowi} />,
remote: 47 | 'page-attachment': <PageAttachment pageId={pageId} pageContent={pageContent} crowi={crowi} />,
remote: 48 |
remote:
remote: BabelLoaderError: SyntaxError: Unexpected token (45:17)
remote:
remote: 43 | const componentMappings = {
remote: 44 | // 'search-top': <HeaderSearchBox crowi={crowi} />,
remote: > 45 | 'search-page': <SearchPage crowi={crowi} />,
remote: | ^
remote: 46 | 'page-list-search': <PageListSearch crowi={crowi} />,
remote: 47 | 'page-attachment': <PageAttachment pageId={pageId} pageContent={pageContent} crowi={crowi} />,
remote: 48 |
remote:
remote: at transpile (/tmp/build_d989cb6fdb4acc6a79775c1d6949d915/node_modules/babel-loader/lib/index.js:63:13)
remote: at Object.module.exports (/tmp/build_d989cb6fdb4acc6a79775c1d6949d915/node_modules/babel-loader/lib/index.js:163:20)form.b39996c7cb4897273bcf.js from UglifyJs
remote: Unexpected character '`' [form.b39996c7cb4897273bcf.js:525,32]
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 1
remote: npm ERR! crowi@1.6.2 postinstall: `gulp`
remote: npm ERR! Exit status 1
remote: npm ERR!
remote: npm ERR! Failed at the crowi@1.6.2 postinstall script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /app/.npm/_logs/2017-10-04T05_14_16_105Z-debug.log
remote:
remote: -----> Build failed
1.6.2が上がっているのだと思うのだけれど、herokuのことをわかってないから起こるような問題に当たってしまったのかしら。
で
どうすんべと思ってCrowiのgitter見に行って過去ログ漁っていたら、
“起動するときの env に関しては heroku 管理画面の configuration vars から見れると思います” という書き込みがあったので、
えーーーーーーーーーーーーっっと、、、
俺がやりたいことはこれで叶うのがわかった。
過去ログを漁るの大事だ。
問題はどうしよう
問題がherokuからの既存Appの取得にあるのかherokuへのupの仕方にあるのか内容にあるのかが全然わかってないので、えーーっと
こんなことがありましたよ、というのは伝えるか。
問題がどこにあるのかわかんないのが気持ち悪いんだけどこのモチベーションどうなの。
結論
heroku > configuration vars に FILE_UPLOAD local みたいなのをつけたら無事動いたよ、よかったね、という話。
ちなみに
gitterで指摘してもらった通り、heroku上にダイレクトにファイルを置くと、まあ、一定時間で消えるので、はい。。。
プランの問題なのかなと思ってたらそういうもんなのね。やろうとしたことなかったから知らんかった。
残念。